/**
 * @details: 
 * @brief: 
 * @version: 1.0
 * @author: liuri
 * @Date: 2021-10-05 05:15:40
 * @LastEditors: liuri
 * @LastEditTime: 2021-10-06 09:48:35
 * @FilePath: /TestProject/cPath/vtysh/cmd_terminal_type.h
 * @Copyright (C) 2021 liuri. All rights reserved.
 */

#ifndef __CMD_TERMINAL_TYPE_H__
#define __CMD_TERMINAL_TYPE_H__


#define TERMINAL_RECORD(t) ((t) >= TERMINAL_OPTION) // 是否是需要记录的参数

/**
 * @brief: TERMINAL_OPTION 和
 */
enum cmd_terminal_type
{
    _TERMINAL_BUG = 0,      // 复合节点时指定
    TERMINAL_LITERAL,       // 文字，唯一常量，后面的都是参数
    TERMINAL_OPTION,        // 选项,中括号: []
    TERMINAL_VARIABLE,      // 可变
    TERMINAL_VARARG,        // 可变参数，可能连续多个
    TERMINAL_RANGE,         // 返回 <1-999>
    TERMINAL_IPV4,          // a.a.a.a/m
    TERMINAL_IPV4_PREFIX,   // 
    TERMINAL_IPV6,
    TERMINAL_IPV6_PREFIX,
};


// 优先级最高是最下面的
enum match_type 
{
    no_match,
    extend_match,
    ipv4_prefix_match,
    ipv4_match,
    ipv6_prefix_match,
    ipv6_match,         
    range_match,        // 范围匹配
    vararg_match,       // 变量匹配
    partly_match,       // 部分匹配
    exact_match         // 精确匹配
};







int cmd_word_match(int terminal, char *str, const char *word);



#endif
